package demo.common;

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 查询对象，用于接收客户请求（分页，排序，过滤等查询），生成JPA可用的分页对象`Pageable`, 查询条件等。
 * 分页，过滤功能后期加入
 * @param <T>
 */
public class QueryData<T> {
    /**
     * 默认每页条数
     */
    public static final int PAGE_SIZE = 10;

    /**
     * 分页的当前页码，从1开始
     */
    private int page = 1;
    /**
     * 每页条数
     */
    private int size = PAGE_SIZE;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    /**
     * 构造分页，及排序对象
     *
     * @return 分页，及排序对象
     */
    public Pageable buildPageable() {
        if (page < 1) {
            page = 1;
        }
        if (size < PAGE_SIZE) {
            size = PAGE_SIZE;
        }
        return PageRequest.of(page - 1, size);
    }
}
